import os
import argparse

def batch_rename_files(directory, prefix, start_num=1, ext_filter=None):
    """
    批量重命名文件
    :param directory: 目标目录
    :param prefix: 新文件名前缀
    :param start_num: 起始编号
    :param ext_filter: 仅重命名指定扩展名的文件，如'.txt'，None则全部重命名
    """
    try:
        # 获取目录下的所有文件
        files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]
        
        # 过滤文件扩展名
        if ext_filter:
            files = [f for f in files if f.lower().endswith(ext_filter.lower())]
        
        # 按创建时间排序
        files.sort(key=lambda x: os.path.getctime(os.path.join(directory, x)))
        
        # 批量重命名
        count = 0
        for filename in files:
            old_path = os.path.join(directory, filename)
            # 获取文件扩展名
            ext = os.path.splitext(filename)[1]
            # 新文件名
            new_filename = f"{prefix}_{start_num + count:03d}{ext}"
            new_path = os.path.join(directory, new_filename)
            
            os.rename(old_path, new_path)
            print(f"重命名: {filename} -> {new_filename}")
            count += 1
        
        print(f"完成！共重命名 {count} 个文件")
        
    except Exception as e:
        print(f"发生错误: {str(e)}")

if __name__ == "__main__":
    # 解析命令行参数
    parser = argparse.ArgumentParser(description='批量重命名文件脚本')
    parser.add_argument('directory', help='目标目录路径')
    parser.add_argument('prefix', help='新文件名前缀')
    parser.add_argument('--start', type=int, default=1, help='起始编号，默认1')
    parser.add_argument('--ext', help='文件扩展名过滤，如.txt')
    
    args = parser.parse_args()
    
    # 调用重命名函数
    batch_rename_files(
        directory=args.directory,
        prefix=args.prefix,
        start_num=args.start,
        ext_filter=args.ext
    )
